package Leetcode.动态规划;

/**
 * @ClassName 股票最大利润
 * @since: 2023/7/25 19:52
 * @auth: kirito
 * @description:
 * 假设把某股票的价格按照时间先后顺序存储在数组中，请问买卖该股票一次可能获得的最大利润是多少？
 * 输入: [7,1,5,3,6,4]
 * 输出: 5
 * 解释: 在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。
 *      注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
 *
 *
 **/
public class 股票最大利润 {
    public static int maxProfit(int[] prices) {
        int res = 0;
        int min = 0;
        int max = 1,profit = 0;
        for (int i = 1; i < prices.length; i++) {
            if (prices[i] < prices[min] ) {
                min = i;
            }else if(prices[i] > prices[min]){
                max = i;
            }
            if(prices[i] >= prices[max]){
                max = i;
            }
            if(max > min){
                res = Math.max(res,prices[max] - prices[min]);
            }
        }
        return res;
    }
    //.....好像我把题目复杂化了 啊哈哈哈哈
    public int maxProfit2(int[] prices) {
        int cost = Integer.MAX_VALUE, profit = 0;
        for(int price : prices) {
            cost = Math.min(cost, price);
            profit = Math.max(profit, price - cost);
        }
        return profit;
    }

    public static void main(String[] args) {
        int[] a = {3,3,5,0,0,3,1,4};
        System.out.println(maxProfit(a));
    }
}
